#pragma once

#include "matrix4d.h"

class Transform4d
{
public:
	Transform4d(const Matrix4d& m)
	{
		_mat = m;
		_inv = m.GetInverse();
	}

	Transform4d(const Transform4d& t)
	{
		_mat = t._mat;
		_inv = t._inv;
	}

	Matrix4d& Mat() const
	{
		return _mat;
	}

	Matrix4d& Inv() const
	{
		return _inv;
	}

	Transform4d& operator=(const Matrix4d& m)
	{
		_mat = m;
		_inv = m.GetInverse();
	}

	Transform4d& operator=(const Transform4d& t)
	{
		_mat = t._m;
		_inv = t._inv;
	}

protected:
	Matrix4d _mat;
	Matrix4d _inv;
};
